{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = ''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import malaya\n",
    "model_base = malaya.segmentation.transformer(model = 'base')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "\n",
    "with open('prepare/test-set-segmentation.json') as fopen:\n",
    "    data = json.load(fopen)\n",
    "    \n",
    "X, Y = [], []\n",
    "for x, y in data:\n",
    "    X.append(x)\n",
    "    Y.append(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Nihonbashi Mitsui Tower. Menara Nihonbashi Mitsui (Ri Ben Qiao San Jing tawa, \"Nihonbashi Mtusi Tawa\") merupakan sebuah bangunan pencakar langit yang terletak di Chuo, Tokyo, Jepun. Dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukoshimae, Tokyo Metro.',\n",
       " 'nihonbashi mitsui tower. menara nihonbashi mitsui (ri ben qiao san jing tawa, \"nihonbashi mtusi tawa\") merupakan sebuah bangunan pencakar langit yang terletak di chuo, tokyo, jepun. dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah tanah, stesen mitsukoshimae, tokyo metro.',\n",
       " 'Nihonbashi Mitsui Tower. Menara Nihonbashi Mitsui (Ri Ben Qiao San Jing tawa, \"Nihonbashi Mtusi Tawa\") merupakan sebuah bangunan pencakar langit yang terletak di Chuo, Tokyo, Jepun. Dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukoshimae, Tokyo Metro. terletak .',\n",
       " 'nihon bashimitsui tower. menara nihon bashi mitsui (ribenqiaosan jingtawa, \"nihon bashi mtusitawa\") merupakan sebuah bangunan pencakar langit yang terletak di chuo, tokyo, jepun. dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah tanah, stesen mitsukoshimae, tokyo metro.',\n",
       " 'Nihonbashi Mitsui Tower. Menara Nihonbashi Mitsui (Ri Ben Qiao San Jing tawa, \"Nihonbashi Mtusi Tawa\") merupakan sebuah bangunan pencakar langit yang terletak di Chuo, Tokyo, Jepun. Dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukoshimae, Tokyo Metro.',\n",
       " 'nihon bashimitsui tower. menara nihon bashi mitsui (ri ben qiaosan jingtawa, \"nihon bashi mtusitawa\") merupakan sebuah bangunan pencakar langit yang terletak di chuo, tokyo, jepun. dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah tanah, stesen mitsukoshimae, tokyo metro.',\n",
       " 'Dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukoshimae, Tokyo Metro. Antara penyewa bangunan ini ialah:. terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukosh',\n",
       " 'dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah tanah, stesen mitsukoshimae, tokyo metro. antara penyewa bangunan ini ialah:. tingkat atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah stesen unit atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah tanah, stesen',\n",
       " 'Dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukoshimae, Tokyo Metro. Antara penyewa bangunan ini ialah:. ruang pejabat dan hotel di bahagian tingkat atas. atas. hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mita telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukosh',\n",
       " 'dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah tanah, stesen mitsukoshimae, tokyo metro. antara penyewa bangunan ini ialah:. ruang pejabat dan hotel di bahagian tingkat atas. pembinaannya telah siap pada tahun 2005. bahagian tingkat atas. pembinaannya telah siap pada tahun 2005. ia dihubungkan oleh stesen bawah tanah, stesen mitsukoshimae, tokyo met']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_base.greedy_decoder(X[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 9939/9939 [2:46:53<00:00,  1.01s/it]   \n"
     ]
    }
   ],
   "source": [
    "from tqdm import tqdm\n",
    "\n",
    "batch_size = 10\n",
    "results = []\n",
    "for i in tqdm(range(0, len(X), batch_size)):\n",
    "    batch_x = X[i: i + batch_size]\n",
    "    r = model_base.greedy_decoder(batch_x)\n",
    "    results.extend(r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('Nihonbashi Mitsui Tower. Menara Nihonbashi Mitsui (Ri Ben Qiao San Jing tawa, \"Nihonbashi Mtusi Tawa\") merupakan sebuah bangunan pencakar langit yang terletak di Chuo, Tokyo, Jepun. Dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukoshimae, Tokyo Metro.',\n",
       " 'Nihonbashi Mitsui Tower. Menara Nihonbashi Mitsui (Ri Ben Qiao San Jing tawa, \"Nihonbashi Mtusi Tawa\") merupakan sebuah bangunan pencakar langit yang terletak di Chuo, Tokyo, Jepun. Dengan ketinggian 192 meter, bangunan 34 tingkat ini digunakan terutamanya untuk ruang pejabat dan hotel di bahagian tingkat atas. Pembinaannya telah siap pada tahun 2005. Ia dihubungkan oleh stesen bawah tanah, Stesen Mitsukoshimae, Tokyo Metro.')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results_Y = results[:]\n",
    "results_Y[0], Y[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def calculate_wer(actual, hyp):\n",
    "    \"\"\"\n",
    "    Calculate WER using `python-Levenshtein`.\n",
    "    \"\"\"\n",
    "    import Levenshtein as Lev\n",
    "\n",
    "    b = set(actual.split() + hyp.split())\n",
    "    word2char = dict(zip(b, range(len(b))))\n",
    "\n",
    "    w1 = [chr(word2char[w]) for w in actual.split()]\n",
    "    w2 = [chr(word2char[w]) for w in hyp.split()]\n",
    "\n",
    "    return Lev.distance(''.join(w1), ''.join(w2)) / len(actual.split())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 99384/99384 [00:03<00:00, 32582.07it/s]\n"
     ]
    }
   ],
   "source": [
    "wer = []\n",
    "for i in tqdm(range(len(results_Y))):\n",
    "    wer.append(calculate_wer(Y[i], results_Y[i]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.17762361859977974"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "np.mean(wer)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
